Enabling Security Definition RequestsTo receive
Security Definitions as responses to Security Definition Requests, the initiating FIX session
Logon message must have Tag 372 (RefMsgType) set to "c" (i.e. Enable security definitions requests). Security definition requests that are not enabled will be rejected with a
Security Definition containing a SecurityResponseType of Reject Security Proposal (Tag 323=5).
Definition of SecuritiesThe T4 FIX API provides a mechanism to list the securities available for trading and market data streaming. All Security Definition Request messages (Tag 35=c) are successfully responded with one or more
Security Definition messages.
For outrights, spreads, options and multi-legged strategies, the result sets contain information about Exchange identifier, Contract identifier, Market identifier, pricing, minimum trading volumes, minimum price amount (including Variable Tick Tables), quantity leg ratios, buy/sell sides, put/call type, strikes, etc. The Security Definition Request message (Tag 35=c) may interrogate the T4 FIX API for the available exchanges, contracts within an exchange and markets for a specific contract. In all cases, the Security Request Type (Tag 321) is set to request the list of securities (Tag 321=3). The combination of Security Type (Tag 167), Security Exchange (Tag 207), Symbol (55) and SecurityID (Tag 48) determines the returned record set.
Under the FIX T4 API, securities are defined by their Exchange, contracts within an exchange and markets for a specific contract. Exchanges are identified by an unique Exchange ID in Tag 207 (SecurityExchange). Contracts are characterized by its Contract ID in Tag 55 (Symbol). Markets are identified by an unique Market ID in Tag 48 (SecurityID).
The Security Definition Request message covers the following uses:
1.
List Exchanges (Get Exchange IDs): SecurityType (Tag 167) only needs to be specified as input. This request returns all Exchange IDs in the SecurityExchange (Tag 207) with a corresponding description.
2.
List Contracts within an Exchange (Get Contract IDs): SecurityType (Tag 167) needs to be specified as input. SecurityExchange (Tag 207) must also contain the exchange ID for which the contract list is requested. For an option query, the PutOrCall parameter can also be specified (Tag 201). As a result, the request returns all Contract IDs in the Symbol (Tag 55) with a contract description in SecurityDesc (Tag=107).
3.
List Current Markets of a Specific Contract (Get Market IDs): SecurityType (Tag 167) needs to be specified as input. SecurityExchange (Tag 207) and Symbol (Tag 55) must also be provided to determine the contract for which the market list is requested. SecuritySubType (Tag 762) may optionally be specified to reduce the result set. For instance, to request only Outright Futures you may set Tag 762=0. Among other market description parameters, the Market ID is returned in the SecurityID (Tag 48) of the Security Definition message.
4.
List a Specific Current Market (Get Market ID): To request information about a specific market, the Get Market IDs request (just above) is augmented to also include the Market ID (in Tag 48 - SecurityID) of the specific market. To pinpoint the market in the request, the input parameters will include Security Type (Tag 167), SecurityExchange (Tag 207), Symbol (Tag 55) and SecurityID (Tag 48). On success, the descriptive parameters for this specific Market ID are returned.
5.
List Expired Markets for a specific Maturity (Get Expired Markets for Maturity): To request information for expired markets that include the specified maturity. The parameters to be provided include SecurityType (Tag 167), SecurityExchange (Tag 207), Symbol (Tag 55). SecurityRequestType (Tag 321) set to REQUEST_LIST_SECURITIES_ONLY_EXPIRED and MaturityMonthYear (Tag 200) set to the desired maturity. No SecurityID (Tag 48) needs to be specified.
6.
List all Only Expired Markets (Get Expired Markets): To request information about all markets only expired markets. The parameters to be provided include SecurityType (Tag 167), SecurityExchange (Tag 207), Symbol (Tag 55) and SecurityRequestType (Tag 321) must be set to REQUEST_LIST_SECURITIES_ONLY_EXPIRED. No SecurityID (Tag 48) needs to be specified. The response from this request usually results in many messages as all maturities (for outrights only) returned.
Interactive UsageThe FIX API Security Definition Requests are designed to be used in a progressive and incremental manner. That is, the FIX API client would make a security definition request and process all corresponding
Security Definition responses before submitting the next security definition request.
Batching of security definition requests is
not supported. Per the large number of markets that CTS supports (i.e. hundreds of thousands), a significant amount of FIX messages can be generated adversely if multiple security definition requests are received at the same instance. Batching may also generate FIX API server spikes in database and cpu processing. Use of Batching may lead to invalid message traffic and result in the application being disabled.
In addition, FIX clients do not need to make security definition requests (for all instruments of interest) upon every FIX session logon. Within the current FIX session, the FIX client is expected to perform security definitions requests for instruments of immediate use if such security definitions have not been previously cached (from security definition requests of the current and previous FIX sessions).
Security definition requests for the discovery of new markets are expected to be made with the frequency of the contract's expiration cycle (e.g. every quarter for CME equities).
Message DictionaryTag | Field Name | Req'd | Comments |
---|
| Standard Header | Y | MsgType = c |
320 | SecurityReqID | Y | Security Definition Request identifier. Must be unique to distinguish security definition requests |
321 | SecurityRequestType | Y | Type of Security Definition Request. The valid values are: |
| | | 3 = REQUEST_LIST_SECURITIES - For Active (Current) markets. |
| | | 4 = REQUEST_LIST_SECURITIES_ONLY_EXPIRED - For markets that have expired (i.e. no longer trading). Only Outrights are returned. |
167 | SecurityType | N | Indicates type of security. The following values can be used: |
| | | FUT = Futures |
| | | OPT = Options |
| | | STK = Stock |
| | | SYN = Synthetic |
| | | BIN = Binary Option |
207 | SecurityExchange | N | Exchange. This is the T4 Exchange ID. |
55 | Symbol | N | Contract within an Exchange. This is the T4 Contract ID. Related contracts are also returned. |
48 | SecurityID | N | Market (i.e. Security) for a given Contract. This is the T4 Market ID. |
201 | PutOrCall | N | Put Or Call identifier (for Options Security Type). The following values can be used: |
| | | 0 = Put |
| | | 1 = Call |
200 | MaturityMonthYear | N | Month-Year of expired markets. Format: YYYYMM00 or YYYYMM. |
762 | SecuritySubType | N | Security SubType that further describes the security. For active markets only. The following values can be used: |
| | | 0 = None (Outrights) |
| | | 1 = Calendar Spread |
| | | 2 = RT Calendar Spread |
| | | 3 = Inter Contract Spread |
| | | 4 = Butterfly |
| | | 5 = Condor |
| | | 6 = Double Butterfly |
| | | 7 = Horizontal |
| | | 8 = Bundle |
| | | 9 = Month vs Pack |
| | | 10 = Pack |
| | | 11 = Pack Spread |
| | | 12 = Pack Butterfly |
| | | 13 = Bundle Spread |
| | | 14 = Strip |
| | | 15 = Crack |
| | | 16 = Treasury Spread |
| | | 17 = Crush |
| | | 18 = None |
| | | 19 = Threeway |
| | | 20 = Threeway Straddle vs Call |
| | | 21 = Threeway Straddle vs Put |
| | | 22 = Box |
| | | 23 = Christmas Tree |
| | | 24 = Conditional Curve |
| | | 25 = Double |
| | | 26 = Horizontal Straddle |
| | | 27 = Iron Condor |
| | | 28 = Ratio 1x2 |
| | | 29 = Ratio 1x3 |
| | | 30 = Ratio 2x3 |
| | | 31 = Risk Reversal |
| | | 32 = Straddle Strip |
| | | 33 = Straddle |
| | | 34 = Strangle |
| | | 35 = Vertical |
| | | 36 = Jelly Roll |
| | | 37 = Iron Butterfly |
| | | 38 = Guts |
| | | 39 = Generic |
| | | 40 = Diagonal |
| | | 41 = Covered Threeway |
| | | 42 = Covered Threeway Straddle vs Call |
| | | 43 = Covered Threeway Straddle vs Put |
| | | 44 = Covered Box |
| | | 45 = Covered Christmas Tree |
| | | 46 = Covered Conditional Curve |
| | | 47 = Covered Double |
| | | 48 = Covered Horizontal Straddle |
| | | 49 = Covered Iron Condor |
| | | 50 = Covered Ratio 1x2 |
| | | 51 = Covered Ratio 1x3 |
| | | 52 = Covered Ratio 2x3 |
| | | 53 = Covered Risk Reversal |
| | | 54 = Covered Straddle Strip |
| | | 55 = Covered Straddle |
| | | 56 = Covered Strangle |
| | | 57 = Covered Vertical |
| | | 58 = Covered Jelly Roll |
| | | 59 = Covered Iron Butterfly |
| | | 60 = Covered Guts |
| | | 61 = Covered Generic |
| | | 62 = Covered Diagonal |
| | | 63 = Covered Butterfly |
| | | 64 = Covered Condor |
| | | 65 = Covered Horizontal |
| | | 66 = Covered Strip |
| | | 67 = Covered Option |
| | | 68 = Balanced Strip |
| | | 69 = Unbalanced Strip |
| | | 70 = Inter Contract Strip |
| Standard Trailer | Y |
Sample Messages
Requesting all exchanges
>> 10/15/2012 4:22:27 PM [FIXSECURITYDEFINITIONREQUEST] 34=2|49=T4Example|56=T4|52=20121015-21:22:27.673|320=sc-10/15/2012 4:22:27 PM|321=3|167=FUT|
[FIXSECURITYDEFINITIONREQUEST]
[MsgSeqNum] 34 = 2
[SenderCompID] 49 = T4Example
[TargetCompID] 56 = T4
[SendingTime] 52 = 20121015-21:22:27.673
[SecurityReqID] 320 = sc-10/15/2012 4:22:27 PM
[SecurityRequestType] 321 = 3 (REQUEST_LIST_SECURITIES)
[SecurityType] 167 = FUT (FUTURE)
Requesting all contracts for a specific exchange
>> 10/15/2012 4:22:39 PM [FIXSECURITYDEFINITIONREQUEST] 34=3|49=T4Example|56=T4|52=20121015-21:22:39.638|320=sc-10/15/2012 4:22:39 PM|321=3|167=FUT|207=CME_Eq|
[FIXSECURITYDEFINITIONREQUEST]
[MsgSeqNum] 34 = 3
[SenderCompID] 49 = T4Example
[TargetCompID] 56 = T4
[SendingTime] 52 = 20121015-21:22:39.638
[SecurityReqID] 320 = sc-10/15/2012 4:22:39 PM
[SecurityRequestType] 321 = 3 (REQUEST_LIST_SECURITIES)
[SecurityType] 167 = FUT (FUTURE)
[SecurityExchange] 207 = CME_Eq
Requesting all markets for a specific contract
>> 10/15/2012 4:23:22 PM [FIXSECURITYDEFINITIONREQUEST] 34=7|49=T4Example|56=T4|52=20121015-21:23:22.117|320=sc-10/15/2012 4:23:22 PM|321=3|55=ES|167=OPT|201=1|207=CME_EqOp|
[FIXSECURITYDEFINITIONREQUEST]
[MsgSeqNum] 34 = 7
[SenderCompID] 49 = T4Example
[TargetCompID] 56 = T4
[SendingTime] 52 = 20121015-21:23:22.117
[SecurityReqID] 320 = sc-10/15/2012 4:23:22 PM
[SecurityRequestType] 321 = 3 (REQUEST_LIST_SECURITIES)
[Symbol] 55 = ES
[SecurityType] 167 = OPT (OPTION)
[PutOrCall] 201 = 1 (CALL)
[SecurityExchange] 207 = CME_EqOp
Requesting a specific market
>> 10/15/2012 4:40:18 PM [FIXSECURITYDEFINITIONREQUEST] 34=4|49=T4Example|56=T4|52=20121015-21:40:18.421|320=sc-10/15/2012 4:40:18 PM|321=3|55=ES|167=FUT|207=CME_Eq|48=CME_20121200_ESZ2|
[FIXSECURITYDEFINITIONREQUEST]
[MsgSeqNum] 34 = 4
[SenderCompID] 49 = T4Example
[TargetCompID] 56 = T4
[SendingTime] 52 = 20121015-21:40:18.421
[SecurityReqID] 320 = sc-10/15/2012 4:40:18 PM
[SecurityRequestType] 321 = 3 (REQUEST_LIST_SECURITIES)
[Symbol] 55 = ES
[SecurityType] 167 = FUT (FUTURE)
[SecurityExchange] 207 = CME_Eq
[SecurityID] 48 = CME_20121200_ESZ2
FIX API Home Page.